package cn.itcast.service.company.impl;


import cn.itcast.common.entity.PageResult;
import cn.itcast.dao.company.CompanyDao;
import cn.itcast.domain.company.Company;
import cn.itcast.service.company.CompanyService;
import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;
import java.util.UUID;

/**
 * 提供一个dubbo的企业服务
 */
@Service
public class CompanyServiceImpl implements CompanyService {

	@Autowired
	private CompanyDao companyDao;

	@Override
	public List<Company> findAll() {
		return companyDao.findAll();
	}

	//保存企业
	public void save(Company company) {
		//1.设置id （独一无二）
		company.setId(UUID.randomUUID().toString());
		//2.调用dao保存
		companyDao.save(company);
	}

	//根据id查询企业
	public Company findById(String id) {
		return companyDao.findById(id);
	}

	//更新
	public void update(Company company) {
		companyDao.update(company);
	}

	@Override
	public void delete(String id) {
		companyDao.delete(id);
	}

	//分页查询

	/**
	 * 单例，第
	 * @param page
	 * @param size
	 * @return
	 */
	public PageResult findAll(int page, int size) {
		//1.查询总记录数
		// select count(*) from tab
		long total = companyDao.findCount();
		//2.分页形式查询数据列表      page-1*size
		//select * from tab limit ?,?  第一起始页码，第二：每页查询条数
		List list = companyDao.findPage((page-1)*size,  size);
		//3.构造返回值PageResult
		return new PageResult(total,list,page,size);
	}

	/**
	 * 通过PageHelper分页
	 *  1.设置分页参数
	 *  2.调用dao查询全部
	 *  3.构造返回值
	 */
	public PageInfo findPageByHelper(int page, int size) {
		//1.设置分页参数 : 通过工具类方法
		PageHelper.startPage(page,size); //当前页，每页条数
		//2.调用dao查询全部
		List<Company> list = companyDao.findAll();
		//3.构造返回值
		return new PageInfo(list);
	}
}
